package map;

import java.util.*;

/*
  Map的便利, 支持三种便利方式:
  1.遍历所有的key
  2.遍历所有的键值对
  3.遍历所有的value(相对不常用)
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文", 99);
        map.put("数学", 98);
        map.put("英语", 97);
        map.put("物理", 96);
        map.put("化学", 96);
        System.out.println(map); //{物理=96, 数学=98, 化学=96, 语文=99, 英语=97}
        System.out.println("--------------------------------------------");

        /*
         遍历所有的key
         Set<K> keySet()
         将当前map中所有的key以一个Set几个的形式返回
         */
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            System.out.println("key:" + key);
        }
        System.out.println("---------------------------------------------");

        /*
         遍历所有的键值对
         Set<Map.Entry> entrySet()
         当前Map中的每一组键值对以一个Entry实例表示. 将所有键值对以Set集合返回
         Entry:条目
         */
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        for (Map.Entry<String, Integer> e : entrySet) { //e代表每一个键值对
            String key = e.getKey(); //获取key键
            Integer value = e.getValue(); //获取value值
            System.out.println("key:" + key + ", value:" + value);
        }
        System.out.println("----------------------------------------------------");

        /*
          遍历所有的value
          Collection values()
          将当前map中的所有value以一个集合的形式返回
         */
        Collection<Integer> values = map.values();
        for (Integer value : values) {
            System.out.println("value:" + value);
        }
        System.out.println("-------------------------------------------------");

        values.forEach(System.out :: println); //集合forEach()
        map.forEach((k,v)->{ System.out.println(k+":"+v); }); //Map的forEach()
    }
}
